package cn.edu.huas.shopping.Filter;

import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;

import java.io.IOException;
@WebFilter("/*")
public class ShoppingFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        /**
         * 什么情况下不能拦截？
         *      目前写的路径是：/* 表示所有的请求均拦截。
         *
         *      用户访问 login.html  regist.html的时候不能拦截
         *      用户已经登录了，这个需要放行，不能拦截。
         *      用户要去登录，这个也不能拦截。
         *      WelcomeServlet也不能拦截。
         */

        HttpServletRequest request = (HttpServletRequest)req;
        HttpServletResponse response = (HttpServletResponse) resp;
        // 获取请求路径
        String servletPath = request.getServletPath();
        //获取session
        HttpSession session = request.getSession(false);
        //获取uri,这里的filter会拦截css、js、图片，需要添加过滤条件放行
        String uri = request.getRequestURI();
        if("/login.user".equals(servletPath) ||
           "/register.user".equals(servletPath)||
           "/login.html".equals(servletPath) ||
           "/regist.html".equals(servletPath)||
           "/check.user".equals(servletPath) ||
           uri.contains(".css") || uri.contains(".js") || uri.contains(".png") || uri.contains(".jpg") || uri.contains(".grf") ||
           (session != null && session.getAttribute("user") != null)){

            // 继续往下走
            chain.doFilter(request, response);
        }else{
            response.sendRedirect(request.getContextPath() + "/login.html");
        }
    }
}
